Systems and methods for managing local storage of on-demand content

ABSTRACT

On-demand systems and methods are provided to manage locally-stored on-demand content. A user&#39;s equipment controls the deletion of and/or access to on-demand content from a local storage device based on constraining criteria that may include rental conditions, dynamic factors, and keys.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/842,756 (now allowed), which is a continuation of U.S. patentapplication Ser. No. 12/506,086, filed Jul. 20, 2009 (now U.S. Pat. No.9,143,736), which is a continuation of U.S. patent application Ser. No.11/240,552, filed Sep. 30, 2005 (abandoned), all of which are herebyincorporated by reference herein in their entireties.

BACKGROUND OF THE INVENTION

This invention relates to on-demand systems. More particularly, thisinvention relates to managing local storage of on-demand content inon-demand systems.

On demand systems (e.g., video-on-demand (VOD) systems) have beendeveloped that allow a user to order content (e.g., a video program)from an on demand server for playback (or execution, in the case of anapplication) by the user's equipment. In some approaches, a rentalperiod associated with a VOD program defines a period of time duringwhich a user may access the content. Rental periods may, or may not, befee based.

For example, in a VOD system, it may be desirable to store a VOD programor a portion of a VOD program at the user's equipment to allow, forexample, local VCR-like playback control. If the locally-stored VODprogram were accessible by the user beyond an applicable rental period,the user would be able to, perhaps, watch the VOD program incontravention of the VOD provider's viewing policies and fee structure.Thus, it is desirable to prevent the user from retrieving, or tootherwise control the user's access to, locally-stored VOD programsbeyond the expiration of the applicable rental period. More generally,it is desirable to control a user's access to locally cached on-demandcontent beyond an applicable use period defined by the content provider.

SUMMARY OF THE INVENTION

It is an object of this invention to provide systems and methods forstoring on-demand content in a local storage device and managing usageof the locally-stored on-demand content. As used herein “on-demandcontent” includes on-demand programs (and/or data and/or audio),on-demand applications (e.g., games and interactive mini-guides) andcontent related to one or more on-demand programs such as specialfeatures related to on-demand programs, on-demand program previews,related on-demand programs, on-demand associated applications (e.g.,bound or unbound OpenCable Applications Platform (OCAP) applications) ora combination of such content provided as part of a package. Forclarity, and not by way of limitation, the invention is at times hereindiscussed in the context of managing the playback of locally-cachedon-demand video program content, but the principles of the invention mayalso be applied to managing other suitable on-demand content.

In response to a user's request for playback of on-demand content froman on-demand server, the on-demand server sends a content stream of theon-demand content to an on-demand client implemented on a user'sequipment. The on-demand client stores the content stream (or a portionof it) on a local storage device to allow local playback control. Theon-demand client uses constraint criteria to control the deletion ofand/or access to locally-stored on-demand content. The constraintcriteria may include on-demand rental conditions, dynamic factors,and/or keys, which are associated with one or more on-demand contents orcategories of on-demand content. In some embodiments, the constraintcriteria used to control access to locally-stored on-demand content maybe different from the constraint criteria used to control deletion oflocally-stored on-demand content.

BRIEF DESCRIPTION OF THE DRAWINGS

The above and other objects and advantages of the invention will beapparent upon consideration of the following detailed description, takenin conjunction with the accompanying drawings, in which like referencecharacters refer to like parts throughout, and in which:

FIG. 1 is a block diagram of an on-demand system in accordance with oneembodiment of the present invention.

FIG. 2 is a flow chart of an illustrative process for retrieving anddisplaying on-demand content from a local storage device in accordancewith one embodiment of the present invention.

FIGS. 3 and 4 are flow charts of two illustrative processes for managingon-demand content in a local storage device as a function of dynamicfactors that affect the availability in the local storage device inaccordance with one embodiment of the present invention.

FIG. 5 is a flow chart of an illustrative process for deleting on-demandcontent in a local storage device as a function of a dynamic factor andon-demand rental conditions, in accordance with one embodiment of theinvention.

FIG. 6 is a flow chart of another illustrative process for deletingon-demand content from a local storage device as a function of a dynamicfactor and on-demand rental conditions, in accordance with oneembodiment of the invention.

FIG. 7 is a flow chart of an illustrative process for managinglocally-stored on-demand content as a function of keys and otherconstraint criteria in accordance with one embodiment of the presentinvention.

FIG. 8 is a flow chart of an illustrative process for managinglocally-stored on-demand content as a function of a time period inaccordance with one embodiment of the invention.

FIG. 9 is a flow chart of an illustrative process for managinglocally-stored on-demand content as a function of a maximum amount ofon-demand content viewing time in accordance with another embodiment ofthe present invention.

FIG. 10 is a flow chart of an illustrative process for managinglocally-stored on-demand content as a function of a maximum number ofon-demand content viewings in accordance with one embodiment of thepresent invention.

FIG. 11 is a flow chart of an illustrative process for managinglocally-stored on-demand content as a function of a maximum number ofon-demand contents that is allowed to be concurrently stored in a localstorage device, in accordance with one embodiment of the invention.

FIG. 12 is a flow chart of an illustrative process for managinglocally-stored on-demand content using flags in accordance with oneembodiment of the invention.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 is a simplified block diagram of one embodiment of an on-demandsystem 100 according to the present invention. On-demand system 100includes user equipment 110 and remote on-demand server 150. In someembodiments, on-demand content may be distributed from a headend orremote site (not shown) to, and stored on, remote on-demand server 150.Although FIG. 1 illustrates one remote on-demand server 150 for clarity,on-demand system 100 may include more than one remote on-demand server150 and/or additional types of servers that interface with userequipment 110.

Remote on-demand server 150, which may include a storage device andprocessing circuitry, communicates with user equipment 110 overcommunications path 136. Communications path 136 may be a satellitepath, a fiber-optic path, a cable path, an Internet Protocol (IP) path,or any other suitable wired or wireless path. Data (e.g., an on-demandcontent stream, on-demand constraint criteria, on-demand-relatedmessages, etc.) is sent or exchanged via communications path 136 using asynchronous delivery mechanism (e.g., MPEG-2 transport over ahybrid-fiber coax network), an asynchronous delivery mechanism (e.g.,store-and-forward, best-effort, or Internet Protocol (IP)), or acombination of synchronous and asynchronous delivery mechanisms.Although communications path 136 is shown as a single path for clarity,communications path 136 may include multiple paths (e.g., multiple IPpaths between user equipment 110 and multiple distributed remoteon-demand servers 150).

In practice, there may be many installations of user equipment 110, butonly one has been shown to avoid over-complicating the drawing. Userequipment 110 may be any in-home equipment suitable for providingon-demand functionality, such as a suitably equipped television, set-topbox, digital video recorder (DVR), personal video recorder (PVR), orPCTV. Whatever the chosen equipment, user equipment 110 may include atleast user input device 120, processing circuitry 130, storage device134, and display device 140. User input device 120 may be any suitabledevice or combination of input devices including, for example, a remotecontrol, a keyboard, a mouse, a touch pad, a touch screen, or a voicerecognition interface. Display device 140 may be any suitable deviceconfigured to provide for the output of video and audio such as, forexample, a television, plasma display, LCD, or computer monitor.

Processing circuitry 130 may include a processor, such as amicroprocessor, and any other suitable circuitry for providingon-demand-related functionality, including, for example, cachingcircuitry, video-decoding circuitry, direct memory access circuitry,input-output circuitry (including communications circuitry forcommunicating with remote on-demand server 150 over communications path136), decryption circuitry, and transcryption circuitry.

Storage device 134 may be any suitable storage device or combination ofcoupled storage devices for storing on-demand client programming logic,data, and on-demand content including, for example, RAM, flash memory,one or more hard disk drives, removable storage media, one or moreCD-ROM drives, or one or more networked drives on an in-homeentertainment network.

Processing circuitry 130 executes the on-demand client to performmultiple functions, including: (1) receiving commands from user inputdevice 120 over communications path 122 and either sending the commandsto remote on-demand server 150 or processing the commands locally, (2)playing back on-demand content from storage device 134 and/or remoteon-demand server 150, (3) storing on-demand content in storage device134, and (4) controlling the deletion of and/or access to on-demandcontent stored on storage device 134 as a function of constraintcriteria. In some embodiments the on-demand client is part of, orcommunicates with, an interactive television application such as aninteractive television program guide.

Communications path 138 may be any suitable display interface such as,for example, a Digital Visual Interface (DVI) or FireWire Interface(IEEE 1394). Communications path 122 may be any suitable wired orwireless path (e.g., an infrared path).

In a typical use scenario, a user of on-demand system 100 selectscontent for playback using user input device 120. User input device 120sends a signal to the on-demand client which, in response, requests theselected on-demand content from on-demand server 150. On-demand server150 retrieves the on-demand content and transmits it to user equipment110 as a digital stream (e.g., an MPEG stream). The on-demand clientstores the stream in storage device 134 and may begin playing back thecontent from storage device 134 before the entire stream is received(i.e., when only a portion of the content is stored), or in someapproaches may store the entire content stream before playing back thecontent. In still other approaches, the entire on-demand content is notstored locally, and a circular cache is used to store or buffer only aportion of the content at a given point in time.

Given the overhead already required to establish the communications linkbetween remote on-demand server 150 and user equipment 110, theadditional overhead required to store the entire on-demand contentcompared to storing a portion of the on-demand content may be minimal.Thus in some embodiments, the on-demand client stores the entirety ofthe on-demand content independent of whether the user actually watchesthe entire on-demand content. In such embodiments, the on-demand clientmay stop storing the entirety of an on-demand content in response to,for example, a tuner or communications path becoming unavailable, ifrecording the entire on-demand content is undesirable as a result ofother system requirements, or if access to the program violatesconstraint criteria as described below.

In some embodiments, remote on-demand server 150 may encode and compressthe content stream before transmitting it to user equipment 110. In suchembodiments, the on-demand client stores the encoded and compressedcontent stream in storage device 134. The on-demand client mayimmediately start playing the on-demand content by retrieving thecontent stream from storage device 134 in a first-in, first-out (FIFO)fashion, and decoding and decompressing the stream for output to displaydevice 140. The on-demand client may also access the stream at a latertime (such as to provide the user with local playback control, or whenthe entire stream is stored before it is played back).

In the prior art, on-demand content stored on storage device 134, untildeleted, may remain accessible to the user beyond the expiration of theon-demand service provider's rental period (which may or may not befee-based, depending on the desired implementation). This would beundesirable as the on-demand provider could lose control over what theuser does with the on-demand content. For example, the user could storethe on-demand content in storage device 134 as long as the user wants(e.g., until the user deletes the on-demand content from storage device134), or view the on-demand content as many times as the user wants.

To avoid this undesirable result, the on-demand client controls thedeletion of and/or access to the on-demand content (or portions of theon-demand content) stored in storage device 134 as a function ofconstraint criteria associated with each content or groups of contents(e.g., on-demand contents of a particular genre, contents that cost asimilar fee, or any other suitable group). The on-demand client maycontrol the deletion of on-demand content stored in storage device 134using the same criteria as, or different criteria from, the constraintcriteria used to control access to the content. As used herein, “controlaccess” may include, for example, controlling (a) the retrieval of theon-demand content from storage device 134, (b) the decoding of anencoded content stream, and (c) the decryption (or transcryption) of anencrypted (or transcrypted) content stream, or controlling any otheractivity the user may perform when accessing the locally storedon-demand content.

In some embodiments, remote on-demand server 150 transmits constraintcriteria to user equipment 110. In other embodiments, another suitableserver such as, for example, a different remote on-demand server 150(i.e., an on-demand server other than the one that provided the storedon-demand content), an interactive program guide server, a digitalrights management server, or an authentication server (e.g., RADIUSserver), may transmit the constraint criteria. Processing circuitry 130stores the constraint criteria in storage device 134.

Remote on-demand server 150, or another suitable server, may transmitthe constraint criteria as part of, or independent from (such as part ofa distinct metadata stream along the same communications path 136 oralong a different communications path 136), the content stream. Theconstraint criteria may be transmitted prior to, at the same time as, orafter the transmission of the content stream (but typically before therental window expires). For example, constraint criteria may betransmitted at certain times (e.g., daily, weekly, monthly, or any timethe constraint criteria changes) in response to a user (1) enrolling inthe on-demand service, (2) the first time that the user requestsplayback of any on-demand content from remote on-demand server 150, (3)each time that the user requests playback of any on-demand content fromremote on-demand server 150, (4) just prior to a time at which theon-demand client determines whether to delete and/or prevent the userfrom accessing the on-demand content from storage device 134 (but beforethe rental window expires), or (5) at any other suitable time.

In some embodiments, the constraint criteria may be initially stored inprocessing circuitry 130, storage device 134, or other circuitry in userequipment 110. In still other embodiments, a portion of the constraintcriteria is provided by remote on-demand server 150 or another suitableserver, and a portion is initially stored in user equipment 110.

The constraint criteria may include on-demand rental conditions. Theseare conditions related to the system provider's rental policies (whichmay or may not be fee-based). The on-demand rental conditions may, forexample, specify an on-demand rental window, one or more other timeperiods, usage limits, or a combination of these or other suitablerental conditions. The rental conditions may, for example, specifycharacteristics of other on-demand content that are permitted to be, orforbidden from being, stored on storage device 134 with content orcontents associated with the rental condition. Such characteristics mayinclude, for example, availability, size, duration, pricing, marketing,whether part of a common series, whether part of a common promotionalpackage, and other suitable factors relating to the other on-demandcontent.

Rental condition time periods may be defined in any suitable manner. Insome embodiments, the time period is based on the time when theon-demand content was initially stored in storage device 134. Forexample, the on-demand client may, as a function of this time period,delete the on-demand content from, or prevent the user from accessingthe on-demand content from, storage device 134 twenty-four hours afterthe on-demand content is stored in storage device 134.

A time period may be based, for example, on the time when the on-demandcontent was initially made available from remote on-demand server 150(which is independent from the actual time that the on-demand content isordered (e.g., by a user) and/or the time when the on-demand content wasstored locally). For example, the on-demand client may, as a function ofthe time period, delete the on-demand content from, or prevent the userfrom accessing the on-demand content from, storage device 134 seven daysafter the on-demand content was initially made available from remoteon-demand server 150.

As another example, a time period may be based on the time when theon-demand content will be removed from remote on-demand server 150. Forexample, the on-demand client may, as a function of the time period,delete the on-demand content from, or prevent the user from accessingthe on-demand content from, storage device 134 at the same time that, orsome period after, the on-demand content is removed from remoteon-demand server 150.

In yet another example, a time period may be based on the time when theuser first requested playback of the on-demand content from storagedevice 134. For example, the on-demand client may, as a function of thetime period, delete the on-demand content from, or prevent the user fromaccessing the on-demand content from, storage device 134 twelve hoursafter the user initially requests playback of the on-demand content fromstorage device 134. The user may have ordered (e.g., purchased) theon-demand content at the same time as, or prior to, the time in whichthe user requested playback of the on-demand content.

In a final example, the time period may be based on the current date andtime. For example, the on-demand client may, as a function of the timeperiod, delete on-demand content from storage device 134 each Sunday atmidnight.

Rental condition usage limits may also be defined in any suitablemanner. The usage limit may be an allowable number of times that theuser has requested playback of the on-demand content from storage device134. For example, the on-demand client may, as a function of this rentalcondition, delete the on-demand content from, or prevent the user fromaccessing the on-demand content from, storage device 134 after the userhas requested and viewed the on-demand content from storage device 134three times.

The usage limit may be a cumulative time that the user may spend viewingthe on-demand content from storage device 134. For example, theon-demand client may, as a function of this rental condition, delete theon-demand content from, or prevent the user from accessing the on-demandcontent from, storage device 134 after the user has spent a total ofeighteen hours viewing the on-demand content in its entirety or invarious portions.

The usage limit may be a parental control that limits the number oftimes and/or the cumulative time that a user may request and/or view anon-demand content that exceeds a particular rating (or a combination ofon-demand contents that exceeds a set of ratings) from storage device134.

The usage limit may be an allowable number of currently stored on-demandcontents. For example, the on-demand client may only allow a user tostore a maximum of four on-demand contents at any given time in storagedevice 134. In response to the user requesting a fifth on-demandcontent, the on-demand client may delete and/or prevent access to one ofthe on-demand contents currently stored in storage device 134. Thismaximum may be based on the number of on-demand contents in one or morecategories (e.g., first-run, classic, action, comedy, movies starring aparticular actor, movies in a particular series, etc.) concurrentlystored in storage device 134. For example, the on-demand client may onlyallow a user to concurrently store a maximum of five first-run moviesand/or ten classics. In response to the user requesting a sixthfirst-run movie (or an eleventh classic), the on-demand client maydelete and/or prevent access to one of the first-run movies (orclassics) currently stored in storage device 134.

In some embodiments, the constraint criteria may include dynamic factorsthat specify conditions of the user's equipment. Such factors mayinclude, for example, whether the user is actively watching theon-demand content, dynamic factors regarding the availability in thelocal storage device (e.g., whether other system activities require useof the local storage device or other conflicts), whether the portion ofthe on-demand content stored in the local storage device meets a “keep”criterion (e.g., a threshold amount of the on-demand content that needsto be stored in the local storage device below which the user'sequipment deletes the on-demand content from the local storage device)or a combination of such factors.

In some embodiments, the on-demand client may employ cryptographictechniques (e.g., encryption/decryption and transcryption). In suchembodiments, the constraint criteria may include keys. The on-demandclient uses the keys from the constraint criteria to process (e.g.,decrypt, transcrypt) the content stream for display to the user. Remoteon-demand server 150 can send an encrypted (or transcrypted) contentstream, or a portion thereof, to user equipment 110. The on-demandclient may decrypt (or transcrypt) the content stream using the keysprior to, or after, storing the content stream in storage device 134. Ifdesired, the keys and other sensitive information may be stored in asecure memory device or otherwise handled in a secure manner.

Prior to deleting and/or preventing the user from accessing an on-demandcontent from storage device 134 as a function of the constraintcriteria, the on-demand client may provide the user the option to extendthe viewing time window of the on-demand content or otherwise relax theconstraint criteria associated with the on-demand content. When the userdoes not accept such an option, the on-demand client may then deleteand/or prevent the user from accessing the on-demand content fromstorage device 134. When the user accepts the option, the user may becharged a fee (e.g., at the original fee or at a discount), or mayreceive incentives such as special features related to the on-demandcontent or previews of related on-demand contents. This extended viewingtime window may have the same constraint criteria as, or differentconstraint criteria from, the original constraint criteria for thelocally-stored on-demand content.

FIG. 2 is a flow chart of an illustrative process for retrieving anddisplaying locally-stored on-demand contents in accordance with oneembodiment of the present invention. In this embodiment, the on-demandclient may begin playback prior to storing the entire content in storagedevice 134.

Process 200 starts at step 202 where the on-demand client receives arequest for a segment (e.g., at least a portion) of on-demand content(e.g., from a local user). At step 204, the on-demand client determineswhether the entire on-demand content is locally stored (e.g., in storagedevice 134). If the entire on-demand content is not locally stored,process 200 proceeds to step 206 where the on-demand client determineswhether retrieval of the on-demand content from remote on-demand server150 is underway. If it is not, process 200 then moves to step 208 wherethe on-demand client initiates the retrieval of the on-demand contentfrom remote on-demand server 150. If at step 206 it is determined thatthe on-demand client has already initiated retrieval of the on-demandcontent, or after step 208, process 200 then moves to step 210. Undercertain conditions, step 208 may be skipped. For example, it may beundesirable to attempt to retrieve an entire on-demand content when,necessary resources are unavailable, such as when a user in asingle-tuner system tunes away from the on-demand content. Thus, in sucha circumstance, process 200 may move directly to step 210.

At step 210, the on-demand client determines whether the requestedsegment of the on-demand content is available on local storage device134. If the requested segment is not available, process 200 moves tostep 212 where the on-demand client determines whether there is aresource timeout (e.g., an error state, or an exceptional delay on atuner resource or an IP connection). If a resource timeout is detected,then in step 214, the on-demand client informs the user or system of theproblem. Process 200 then ends at step 220. If a resource timeout is notdetected at step 212, process 200 returns to step 210.

If the requested segment is available at step 210 or step 204, process200 moves to step 216 where the requested segment is retrieved fromlocal storage device 134. Then at step 218, the on-demand client decodesand displays the requested segment. Process 200 ends at step 220.

FIGS. 3-11 are flow charts of illustrative processes that the on-demandclient may perform to control the deletion of and/or access to locallystored on-demand contents as a function of various combinations ofconstraint criteria. The on-demand client may initiate these processesin response to, for example, a triggering event or timer. In someembodiments, the on-demand client may perform one or more of theseprocesses periodically or continuously (such as in a round-robinfashion). These processes are only illustrative as other embodiments maycombine the constraint criteria in the processes of FIGS. 3-11 in anysuitable combination, and may use other types of constraint criteria notshown in the figures.

FIGS. 3 and 4 are flow charts of two illustrative processes for managingon-demand content in a local storage device as a function of dynamicfactors that affect the availability in the local storage device. Inthese examples, the dynamic factors specified by the constraint criteriainclude determining whether the user is watching the program anddetermining whether storage is needed for other system activities (FIGS.3 and 4), and whether “keep” criteria are met (FIG. 4). These examplesassume as an initial state that the rental period has not expired(determining whether the rental period has not expired is not shown).Process 300 of FIG. 3 starts at step 302. At step 304, the on-demandclient determines whether the user is actively watching an on-demandcontent that has been stored in local storage device 134 (FIG. 1). Ifthe user is actively watching the on-demand content, the process repeatsstep 304 until the user is no longer watching the on-demand content.

If the user is not actively watching, or once the user is no longeractively watching, the on-demand content, process 300 moves to step 306where the on-demand client determines whether the portion of localstorage device 134 storing the on-demand content is needed by the systemfor other activities (such as storing new on-demand content. If space onlocal storage device 134 is not presently needed for other systemactivities, process 300 returns to step 304. If, space on local storagedevice 134 is needed for other system activities, the on-demand clientdeletes the on-demand content, making that portion of local storagedevice 134 available for other system activities (step 308). Asdescribed herein, deleting on-demand content includes deleting a portionof the on-demand content or deleting the entirety of the on-demandcontent stored in local storage device 134. Only a portion of theon-demand content may be deleted when only that portion is stored inlocal storage device 134 or when less disk space is needed than is usedfor the entire on-demand content stored in local storage device 134.Process 300 then ends at step 310.

Process 400 of FIG. 4 starts at step 402. At step 404, the on-demandclient determines whether the user is actively watching an on-demandcontent that has been stored in local storage device 134. If the user isactively watching the on-demand content, the process repeats step 404until the user is no longer watching the on-demand content.

If the user is not actively watching, or once the user is no longeractively watching, the on-demand content, process 400 moves to step 406where the on-demand client determines whether the portion of localstorage device 134 storing the on-demand content is needed by the systemfor other activities. If the portion local storage device 134 is notpresently needed for other system activities, process 400 moves to step408 where the on-demand client determines whether the portion of thestored on-demand content meets a “keep” criterion. For example, theon-demand content may be “kept” if, relative to the size of the entireon-demand content and/or the space available on the local storagedevice, a threshold amount of the program has been stored. If the keepcriterion is met, process 400 returns to step 404. If local storagedevice 134 is needed for other system activities at step 406, or if thekeep criterion is not met at step 408, process 400 moves to step 410where the on-demand client deletes the on-demand content, making thatportion of storage device 134 available for other system activities.Process 400 then ends at step 412.

In one or more variants of processes 300 and 400, the test of step 306of process 300 and/or the test of step 406 of process 400 is furtherconditioned by a priority determination. In other words, the test ismodified to read “Is storage needed for other ‘higher priority’ systemactivities.”

FIG. 5 is a flow chart of an illustrative process for deleting on-demandcontent in a local storage device as a function of a dynamic factor (inthis example, whether the user is watching the on-demand content) andon-demand rental conditions, in accordance with one embodiment of theinvention. In this illustrative process, on-demand rental conditions areused by the on-demand client as deletion criteria for determiningwhether to delete a locally stored on-demand content. In such anapproach, other rental conditions are used to otherwise control accessto the programs.

Process 500 starts at step 502. At step 504, the on-demand clientdetermines whether the user is actively watching an on-demand contentthat has been stored in local storage device 134. If the user isactively watching the on-demand content, the process repeats step 504until the user is no longer watching the on-demand content. In someembodiments, the on-demand client may, based on some on-demand rentalconditions (e.g., an outstanding balance overdue on a user's account),delete a locally-stored on-demand content, or prevent a user fromviewing locally-stored on-demand content, even when the user is activelyengaged in watching a program. This is not shown in process 500 to avoidovercomplicating the drawing.

If the user is not actively watching, or once the user is no longeractively watching, the on-demand content, process 500 moves to step 506where the on-demand client determines whether the on-demand contentmeets the on-demand rental conditions and therefore should be deletedfrom local storage device 134 in this circumstance. If the on-demandcontent does not meet the on-demand rental condition's deletioncriteria, process 500 returns to step 504. If the on-demand contentmeets the on-demand rental condition's deletion criteria, then in step508, the on-demand client deletes the on-demand content, making theportion of the local storage device 134 available for other systemactivities. Process 500 then ends at step 510.

FIG. 6 is a flow chart of an illustrative process for deleting on-demandcontent from a local storage device as a function of a dynamic factor(in this example, whether the user is watching a locally-storedon-demand content), and on-demand rental conditions, including whetherthe on-demand content needs to be securely erased, in accordance withone embodiment of the invention. In this illustrative process, on-demandrental conditions are used by the on-demand client as deletion criteriafor determining whether to delete a locally stored on-demand content. Insuch an approach, other rental conditions are used to otherwise controlaccess to the programs.

Note that typically, freeing storage in a computer system does notnecessarily remove the data (and thus leaves it accessible). Forexample, in a Unix-based computer system, the system function free( )simply removes pointers to the stored data, but leaves the data intactuntil the space is later overwritten by another process writing to anewly malloc( )'ed block that overlaps the previously freed portion ofmemory.

Process 600 starts at step 602. At step 604, the on-demand clientdetermines whether the user is actively watching an on-demand contentthat has been stored in the local storage device. If the user isactively watching the on-demand content, the process repeats step 604until the user is no longer watching the on-demand content. In someembodiments, the on-demand client may, based on some on-demand rentalconditions (e.g., an outstanding balance overdue on a user's account),delete a locally-stored on-demand content, or prevent a user fromviewing locally-stored on-demand content, even when the user is activelyengaged in watching a program. This is not shown in process 600 to avoidovercomplicating the drawing.

If the user is not actively watching, or once the user is no longeractively watching, the on-demand content, process 600 moves to step 606where the on-demand client determines whether the on-demand contentmeets the on-demand rental conditions that would indicate whether theon-demand content should be deleted from the local storage device 134 inthis circumstance. If the on-demand content does not meet the on-demandrental condition's deletion criteria, process 600 returns to step 604.If the on-demand content meets the on-demand rental condition's deletioncriteria, then in step 608, the on-demand client determines whether theon-demand content was distribution controlled (e.g., whether thecopyrighted material was subject to distribution limitations).

If the on-demand content is distribution controlled, process 600 movesto step 610 where the on-demand client securely erases the on-demandcontent from local storage device 134. This can occur by overwriting theon-demand content (e.g., writing with multiple passes of variouspatterns to reduce the probability of recovery of the content) or bycorrupting key portions of the on-demand content (e.g., usingquantization matrices, CRC checks, headers) to render the on-demandcontent more difficult to play. Secure erasure can also be as simple atechnique as setting a “broadcast” flag in the on-demand content toindicate that the content can no longer be distributed. Alternatively, a“never copy” flag can be set, or a “play once” flag can be reset, indigital rights management protocols such as IEEE 1394 5C. Moreinformation on IEEE 1394 5C can be found in “Digital TransmissionContent Protection Specification Revision 1.4 (Informational Version),”Feb. 28, 2005, DTLA, www.dtcp.com, which is incorporated herein byreference in its entirety.

If the on-demand content is not distribution controlled or,alternatively, after step 610, process 600 moves to step 612 where theon-demand client deletes the on-demand content from the local storagedevice, making that portion of the local storage device available forother system activities. Process 600 then ends at step 614.

FIG. 7 is a flow chart of an illustrative process for managinglocally-stored on-demand content as a function of keys and otherconstraint criteria in accordance with one embodiment of the presentinvention. Process 700 starts at step 702. At step 704, the on-demandclient sends a request for playback of an on-demand content to remoteon-demand server 150. At step 706, the on-demand client receives anencrypted content stream of the on-demand content and constraintcriteria for the on-demand content from remote on-demand server 150. Theconstraint criteria include one or more keys and other constraintcriteria (e.g., rental conditions or dynamic factors) for the on-demandcontent. At step 708, the on-demand client stores the encrypted contentstream for the on-demand content in storage device 134. At step 710, theon-demand client receives a request to initiate playback of theon-demand content from storage device 134 via user input device 120.Note that this request may have been implicit in the request of step 704or it may precede it.

At step 712, the on-demand client determines whether to prevent theplayback of the on-demand content based on criteria other than thesecurity-key specific constraint criteria. If playback of the on-demandcontent is prevented, process 700 moves to step 714 where processingcircuitry informs the user, via a suitable display, of the nature of therestriction (e.g., nonpayment of a bill, expiration of the rentalperiod, unavailability of the on-demand content) and the process ends atstep 726. The user may also be offered an opportunity to enable theplayback of the on-demand content (e.g., to pay an outstanding billusing a credit card, to purchase an extension on the rental period).Although not shown, if the user enables the playback of the on-demandcontent, process 700 then moves to step 716.

If playback of the on-demand content is not prevented at step 712, thenat step 716, the on-demand client retrieves the encrypted content streamfor the on-demand content from storage device 134. At step 718, itdecrypts the encrypted content stream based on the keys from theconstraint criteria. At step 720, it renders the decrypted contentstream to display device 140.

At step 722, the on-demand client again checks the criteria other thanthe security-key specific constraint criteria and determines whether todelete and/or prevent access to the content stream from storage device134. If the content stream is to be deleted from, and/or access is to beprevented from, storage device 134 at step 722, the on-demand clientcorrupts or overwrites the content stream in storage device 134 (step724) and process 700 ends at step 726. If the content stream is to bemaintained in, and retrievable from, storage device 134 at step 722,process 700 ends at step 726.

FIG. 8 is a flow chart of an illustrative process for managinglocally-stored on-demand content as a function of a time period inaccordance with one embodiment of the invention. Process 800 starts atstep 802. At step 804, the on-demand client sends a request for playbackof an on-demand content to remote on-demand server 150. At step 806, theon-demand client receives from remote on-demand server 150 a contentstream for the on-demand content and as a rental condition, a timeperiod for deleting and/or controlling access to the program. At step808, the on-demand client stores the content stream for the on-demandcontent and the time period in storage device 134. At step 810, theon-demand client automatically deletes and/or prevents access to thecontent stream from storage device 134 after the specific time period.The process ends at step 812.

FIG. 9 is a flow chart of an illustrative process for managinglocally-stored on-demand content as a function of a maximum amount ofon-demand content viewing time in accordance with one embodiment of thepresent invention. Process 900 starts at step 902. At step 904, theon-demand client sends a request for playback of an on-demand content toremote on-demand server 150. At step 906, the on-demand client receivesfrom remote on-demand server 150 a content stream for the on-demandcontent and a rental condition specifying a total viewing time for theon-demand content. At step 908, the on-demand client stores the contentstream for the on-demand content and the condition in storage device134. At step 910, the on-demand client receives a request to initiateplayback of the on-demand content from storage device 134 via user inputdevice 120. Note that this request may have been implicit in the requestof step 904, or it may precede it. At step 912, the on-demand clientretrieves the content stream for the on-demand content from storagedevice 134. At step 913, the on-demand client transmits the contentstream to display device 140 for display.

At step 916, the on-demand client determines, as a function of theviewing time specified in the rental conditions, whether the amount oftime spent viewing the on-demand content is greater than or equal to amaximum viewing time T (e.g., T is four hours or another suitable time).If the viewing time is less than the maximum viewing time, process 900moves to step 918 where the on-demand client determines whether playbackof the on-demand content has terminated. If playback of the content hasnot terminated, process 900 returns to step 913. Although not shown,while the on-demand client performs steps 916 and 918, if playback ofthe on-demand content has not terminated, it continues to send thecontent stream to display device 140 for display. If playback of thecontent has terminated at step 918, process 900 returns to step 910where the on-demand client receives subsequent requests to initiate theplayback of the content.

If the viewing time is greater than or equal to the maximum viewing timein step 916, process 900 moves to step 920 where the on-demand clientautomatically deletes and/or prevents access to the content stream fromstorage device 134. The process ends at step 922.

FIG. 10 is a flow chart of an illustrative process for managinglocally-stored on-demand content as a function of a maximum number ofon-demand content viewings in accordance with one embodiment of thepresent invention. Process 1000 starts at step 1002. At step 1004, theon-demand client sends a request for playback of an on-demand content toremote on-demand server 150. At step 1006, the on-demand client receivesfrom remote on-demand server 150 a content stream for the on-demandcontent and a rental condition specifying a maximum number of viewingsfor the on-demand content. At step 1008, the on-demand client stores thecontent stream for the on-demand content and the rental condition instorage device 134. At step 1010, the on-demand client receives arequest to initiate playback of the on-demand content from storagedevice 134 via user input device 120. Note that this request may havecome prior to step 1004. At step 1012, the on-demand client retrievesthe content stream for the on-demand content from storage device 134. Atstep 1014, the on-demand client sends the content stream to displaydevice 140 for display. Note that here and in related embodiments, step1014 may include sending only a portion of the on-demand content to thedisplay.

At step 1016, the on-demand client determines whether the number ofviewings of the on-demand content is equal to a maximum number ofviewings N specified in the rental condition. If the number of viewingsis less than the maximum number of viewings, process 1000 returns tostep 1010 where the on-demand client receives subsequent requests toinitiate the playback of the content. If the number of viewings is equalto the maximum number of viewings, process 1000 moves to step 1018 wherethe on-demand client automatically deletes and/or prevents access to thecontent stream from storage device 134. The process ends at step 1020.

FIG. 11 is a flow chart of an illustrative process for managinglocally-stored on-demand content as a function of a maximum number ofon-demand contents that are allowed to be concurrently stored in thelocal storage device, in accordance with one embodiment of theinvention. Process 1100 starts at step 1102. At step 1104, the on-demandclient sends a request for playback of an on-demand content, receivedfrom user input device 120, to remote on-demand server 150. At step1106, the on-demand client receives from remote on-demand server 150 arental condition indicating a maximum number S of contents C that may bestored by storage device 134. At step 1108, the on-demand clientdetermines whether the number of on-demand contents C stored in storagedevice 134 is equal to the maximum number of on-demand contents S (e.g.,four).

In this embodiment, the on-demand client maintains the counter C thatindicates the number of on-demand contents currently stored in storagedevice 134. If the number of on-demand contents stored in storage device134 is equal to the maximum number of on-demand contents, process 1100moves to step 1110 where the on-demand client informs the user through asuitable display that the maximum number of on-demand contents arestored in storage device 134, and provides the user with an option toselect one of the on-demand contents currently stored in storage device134 for deletion. At step 1112, the on-demand client deletes theselected on-demand content from storage device 134 and decrementscounter C by one (represented in FIG. 11 by the following programmingcode syntax: “C−−”). In another embodiment, the user may have the optionto select more than one on-demand content currently stored in storagedevice 134 for removal at step 1110. In such an embodiment, counter C isdecremented to reflect the number of on-demand contents removed fromstorage device 134. In yet another embodiment, the on-demand client mayautomatically delete one of the on-demand contents stored in storagedevice 134. After step 1112, process 1100 returns to step 1108.

If the number of on-demand contents C stored in storage device 134 isless than the maximum number of on-demand contents S at step 1108,process 1100 moves to step 1114 where the on-demand client receives acontent stream for the on-demand content from remote on-demand server150. At step 1116, the on-demand client stores the content stream forthe on-demand content in storage device 134 and increments counter C byone (represented in FIG. 11 by the following programming code syntax:“C++”). At step 1118, the on-demand client receives a request toinitiate playback of the on-demand content from storage device 134 viauser input device 120. This request may be part of, or may precede therequest of step 1104. At step 1120, the on-demand client retrieves thecontent stream for the on-demand content from storage device 134. Atstep 1122, the on-demand client sends the content stream to displaydevice 140 for display. Process 1200 then ends at step 1124.

In some embodiments, the on-demand client may associate flags withlocally-stored on-demand content to control the deletion of and/oraccess to the on-demand content. These flags may be stored, for example,in a table or directory on storage device 134. There may be a deleteflag, a control access flag, or one flag for deleting and controllingaccess to a given on-demand content. The on-demand client may set theflags as a function of the constraint criteria including, for example,the on-demand rental conditions, the keys, or dynamic factors.

For example, the on-demand client may set a control-access flag when anon-demand content is content-protected (e.g., single-user purchased,copyright protected, or distribution-limited) and constraint criteriaare met to indicate that the program is not to be accessed, or accessedonly with a key. The on-demand client may, upon determining that acontrol-access flag is set, alter (e.g., corrupt) the bit representationof the content stream stored in storage device 134 to prevent the userfrom viewing the video after the on-demand rental period. The on-demandclient may alter the bit representation of the video by randomlymodifying cyclic redundancy check (CRC) bits in various packets of thestored video, inserting null packets at regular intervals of the storedvideo, replacing quantization matrices with zero bits, reorderingvarious packets of the stored video, or any other suitable alteration.Upon or during an attempted playback of the on-demand content, theon-demand client may examine the control-access flag, see that it isset, and determine whether it has the appropriate key for decoding theprogram. If it does not, the on-demand client may indicate to the userthat the program is not accessible, or that the user may gain accessonly after paying a fee.

As another example of how flags are used, the on-demand client may set aflag indicating that the on-demand content is to be deleted from storagedevice 134. When another on-demand content is to be recorded (or whenspace on recording device 134 is otherwise needed), the on-demand clientmay examine the delete flag to determine if it is set, and overwrite theprogram with the new one.

FIG. 12 is a flow chart of an illustrative process for managinglocally-stored on-demand content using flags in accordance with oneembodiment of the invention. Process 1200 starts at step 1202. At step1204, the on-demand client determines whether to prevent the user fromaccessing the on-demand content from storage device 134 by determiningwhether a control-access flag (Flag A) associated with the on-demandcontent is set (e.g., to binary “1”). If the control-access flag is notset, process 1200 moves to step 1206.

If the control-access flag is set, process 1200 moves to step 1208 wherethe on-demand client prevents the user from accessing the on-demandcontent from storage device 134 (e.g., by altering the bitrepresentation of the on-demand content). At step 1210, the on-demandclient resets the control-access flag (e.g., to binary “0”). This secondflag may be subsequently used in association with another on-demandcontent that is later stored in storage device 134. Process 1200 thenends at step 1216.

At step 1206, the on-demand client determines whether to delete anon-demand content from storage device 134 by determining whether adeletion flag (Flag B) associated with the on-demand content is set. Ifthe deletion flag is not set, process 1200 returns to step 1204. If thedeletion flag is set, process 1200 moves to step 1212 where theon-demand client deletes the on-demand content from storage device 134by, for example, replacing the on-demand content with other content. Atstep 1214, the on-demand client resets the second flag.

In some embodiments, after the on-demand client prevents the user fromaccessing the on-demand content from storage device 134 at step 1208 andresets the control-access flag at step 1210, it may continue to checkthe delete flag (at step 1206) until the delete flag is set in order todelete the on-demand content from storage device 134.

Although not shown, during process 1200, the on-demand clientcontinually monitors the on-demand rental conditions associated witheach locally-stored on-demand content. In response to any of theon-demand contents satisfying an on-demand rental condition, the flagscorresponding to that on-demand content are set accordingly.

The processes shown in FIGS. 3-12 are illustrative. Steps may beperformed in a different order, steps may be omitted, or steps may beadded as appropriate.

Thus, it is seen that systems and methods are provided for storingon-demand content in a local storage device and managing thelocally-stored on-demand content as a function of certain on-demandconstraint criteria. One skilled in the art will appreciate that theinvention can be practiced by other than the described embodiments,which are presented for purposes of illustration and not of limitation,and the present invention is limited only by the claims which follow.

What is claimed is:
 1. A method for managing at least a portion ofon-demand content provided by an on-demand server and stored in astorage device that is local to an on-demand client, the methodcomprising: receiving an on-demand rental condition, from a remoteserver, which constrains deletion of the at least a portion of theon-demand content that is stored on the storage device, in accordancewith an on-demand provider's rental policies, wherein the on-demandrental condition is defined without input from a user and specifies amaximum total viewing time for the on-demand content allowed by theon-demand provider, wherein the maximum total viewing time is a totaltime the content plays; providing a plurality of viewing sessions forthe content, wherein each viewing session is separated by a period oftime; and controlling deletion of the at least a portion of theon-demand content as a function of the on-demand rental condition andthe plurality of viewing sessions.
 2. The method of claim 1, wherein theon-demand rental condition further specifies at least one usage limitspecifying a maximum number of on-demand contents stored in the storagedevice at a given time, and further comprising: receiving a secondrequest to access a second on-demand content; and restricting access tothe second request in response to determining that the number ofon-demand contents currently stored in the storage device has reachedthe at least one usage limit.
 3. The method of claim 1, furthercomprising: receiving a dynamic factor which constrains deletion of theat least a portion of the on-demand content stored on the storage devicebased on conditions of equipment on which the on-demand client isimplemented; and controlling deletion of the at least a portion of theon-demand content as a function of the dynamic factor.
 4. The method ofclaim 3, wherein the dynamic factor specifies determining whether theuser is watching the on-demand content, determining whether the storagedevice is available, or determining whether the at least a portion ofthe on-demand content meets a keep criterion.
 5. The method of claim 3,wherein controlling deletion of the at least a portion of the on-demandcontent on the storage device comprises: determining that a user of theon-demand client is not actively watching the at least a portion of theon-demand content; and deleting the at least a portion of the on-demandcontent from the storage device in response to the determining.
 6. Themethod of claim 3, wherein controlling deletion of the at least aportion of the on-demand content on the storage device comprises:determining that a user of the on-demand client is not watching the atleast a portion of the on-demand content and that space on the storagedevice is needed for other system activities; and deleting the at leasta portion of the on-demand content from the storage device in responseto the determining.
 7. The method of claim 1, wherein controllingdeletion of the at least a portion of the on-demand content on thestorage device comprises: determining that the user of the on-demandclient is not watching the at least a portion of the on-demand content,that space on the storage device is needed for other system activities,and that the space used by the at least a portion of the on-demandcontent on the storage device is less than a specified minimum keepthreshold; and deleting the at least a portion of the on-demand contentfrom the storage device in response to the determining.
 8. The method ofclaim 1, wherein the on-demand rental condition is received byprocessing circuitry from at least one of an on-demand server and athird-party rights-management server.
 9. The method of claim 1, whereinthe on-demand rental condition is a function of a rating of theon-demand content.
 10. The method of claim 1, further comprising:receiving a key according to which the at least a portion of theon-demand content may be decrypted; decrypting the at least a portion ofthe on-demand content as a function of the key; and playing back thedecrypted at least a portion of the on-demand content.
 11. A system formanaging at least a portion of on-demand content provided by anon-demand server and stored in a storage device that is local to anon-demand client, the system comprising: control circuitry configuredto: receive an on-demand rental condition, from a remote server, whichconstrains deletion of the at least a portion of the on-demand contentthat is stored on the storage device, in accordance with an on-demandprovider's rental policies, wherein the on-demand rental condition isdefined without input from a user and specifies a maximum total viewingtime for the on-demand content allowed by the on-demand provider,wherein the maximum total viewing time is a total time the contentplays; provide a plurality of viewing sessions for the content, whereineach viewing session is separated by a period of time; and controldeletion of the at least a portion of the on-demand content as afunction of the on-demand rental condition and the plurality of viewingsessions.
 12. The system of claim 11, wherein the on-demand rentalcondition further specifies at least one usage limit which specifies amaximum number of on-demand contents stored in the storage device at agiven time, and wherein the control circuitry is further configured to:receive a second request to access a second on-demand content; andrestrict access to the second request in response to the determinationthat the number of on-demand contents currently stored in the storagedevice has reached the at least one usage limit.
 13. The system of claim11, wherein the control circuitry is further configured to: receive adynamic factor which constrains deletion of the at least a portion ofthe on-demand content stored on the storage device based on conditionsof equipment on which the on-demand client is implemented; and controldeletion of the at least a portion of the on-demand content as afunction of the dynamic factor.
 14. The system of claim 13, wherein thedynamic factor specifies a determination of whether the user is watchingthe on-demand content, a determination of whether the storage device isavailable, or a determination of whether the at least a portion of theon-demand content meets a keep criterion.
 15. The system of claim 13,wherein, to control deletion of the at least a portion of the on-demandcontent on the storage device, the control circuitry is furtherconfigured to: determine that a user of the on-demand client is notactively watching the at least a portion of the on-demand content; anddelete the at least a portion of the on-demand content from the storagedevice in response to the determination.
 16. The system of claim 13,wherein, to control deletion of the at least a portion of the on-demandcontent on the storage device, the control circuitry is furtherconfigured to: determine that a user of the on-demand client is notwatching the at least a portion of the on-demand content and that spaceon the storage device is needed for other system activities; and deletethe at least a portion of the on-demand content from the storage devicein response to the determination.
 17. The system of claim 11, wherein,to control deletion of the at least a portion of the on-demand contenton the storage device, the control circuitry is further configured to:determine that the user of the on-demand client is not watching the atleast a portion of the on-demand content, that space on the storagedevice is needed for other system activities, and that the space used bythe at least a portion of the on-demand content on the storage device isless than a specified minimum keep threshold; and delete the at least aportion of the on-demand content from the storage device in response tothe determination.
 18. The system of claim 11, wherein the on-demandrental condition is received by processing circuitry from at least oneof an on-demand server and a third-party rights-management server. 19.The system of claim 11, wherein the on-demand rental condition is afunction of a rating of the on-demand content.
 20. The system of claim11, wherein the control circuitry is further configured to: receive akey according to which the at least a portion of the on-demand contentmay be decrypted; decrypt the at least a portion of the on-demandcontent as a function of the key; and play back the decrypted at least aportion of the on-demand content.